package com.yuji.aacar.core.mvvm.appbase;


import com.yuji.aacar.core.cores.services.CoreServiceResponse;

/**
 * <li>Package:com.ttp.core.mvvm.appbase</li>
 * <li>Author: lining</li>
 * <li>Date: 2017/2/14</li>
 * <li>Description: MVVM绑定界面刷新等方式</li>
 */

public interface CoreBaseController {

    /**
     * 设置viewModle
     *
     * @param coreBaseViewModel
     */
    public void setViewModel(CoreBaseViewModel coreBaseViewModel);

    /**
     * 获得viewModle
     */
    public CoreBaseViewModel getViewModel();

    /**
     * 网络请求成功，通知界面刷新
     *
     * @param response response对象包含了token等所有信息
     */
    public void requestSuccess(CoreServiceResponse response);

    /**
     * 网络请求失败，将错误码和错误信息返回自行处理
     *
     * @param response response对象包含了token等所有信息
     */
    public void requestFailed(CoreServiceResponse response);

    /**
     * 网络请求，实现还是调用的SCTaskPool的逻辑，重载的目的是将每个请求绑定在对应的controller上面，
     * 方便在退出activity的时候能够统一的取消该controller中所有的网络请求。
     */
    //	public TaskToken doTask(ViewModel viewModel, String method);
//    public TaskToken doTask(String method, HashMap<String, ?> parameters);

    /**
     * activity已经绑定了viewmodel，可以直接调用baseviewmodel获取viewmodel
     */
    public void alreadyBindBaseViewModel();


    /**
     * 显示Toast
     *
     * @param text 显示文案
     */
    public void showToast(String text);

    /**
     * 显示Toast
     *
     * @param text     显示文案
     * @param duration 显示时长
     */
    public void showToast(String text, int duration);

    /**
     * 取消Toast
     */
    public void cancelToast();
}
